using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._RasterProcessing
{
    /// <summary>
    /// <para>Split Raster</para>
    /// <para>Divides a raster dataset  into smaller pieces, by tiles or features from a polygon.</para>
    /// <para>按面中的切片或要素将栅格数据集划分为更小的部分。</para>
    /// </summary>    
    [DisplayName("Split Raster")]
    public class SplitRaster : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SplitRaster()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_raster">
        /// <para>Input Raster</para>
        /// <para>The raster to split.</para>
        /// <para>要分割的栅格。</para>
        /// </param>
        /// <param name="_out_folder">
        /// <para>Output Folder</para>
        /// <para>The destination for the new raster datasets.</para>
        /// <para>新栅格数据集的目标。</para>
        /// </param>
        /// <param name="_out_base_name">
        /// <para>Output Base Name</para>
        /// <para>The prefix for each of the raster datasets you will create. A number will be appended to each prefix, starting with 0.</para>
        /// <para>将创建的每个栅格数据集的前缀。每个前缀将附加一个数字，从 0 开始。</para>
        /// </param>
        /// <param name="_split_method">
        /// <para>Split Method</para>
        /// <para><xdoc>
        ///   <para>Determines how to split the raster dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>Size of tile—Specify the width and height of the tile.</bullet_item><para/>
        ///     <bullet_item>Number of tiles— Specify the number of raster tiles to create by breaking the dataset into a number of columns and rows.</bullet_item><para/>
        ///     <bullet_item>Polygon features— Use the individual polygon geometries in a feature class to split the raster.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定如何分割栅格数据集。</para>
        ///   <bulletList>
        ///     <bullet_item>图块大小 - 指定图块的宽度和高度。</bullet_item><para/>
        ///     <bullet_item>切片数 - 通过将数据集分解为多个列和行来指定要创建的栅格切片数。</bullet_item><para/>
        ///     <bullet_item>面要素 - 使用要素类中的各个面几何来分割栅格。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_format">
        /// <para>Output Format</para>
        /// <para><xdoc>
        ///   <para>The format for the output raster datasets.</para>
        ///   <bulletList>
        ///     <bullet_item>Geotiff (*.tif)—Tagged Image File Format. This is the default.</bullet_item><para/>
        ///     <bullet_item>Bitmap (*.bmp)—Microsoft Bitmap.</bullet_item><para/>
        ///     <bullet_item>ENVI (*.dat)—ENVI DAT.</bullet_item><para/>
        ///     <bullet_item>Esri BIL (*.bil)—Esri Band Interleaved by Line.</bullet_item><para/>
        ///     <bullet_item>Esri BIP (*.bip)—Esri Band Interleaved by Pixel.</bullet_item><para/>
        ///     <bullet_item>Esri BSQ (*.bsq)—Esri Band Sequential.</bullet_item><para/>
        ///     <bullet_item>GIF (*.gif)—Graphic Interchange Format.</bullet_item><para/>
        ///     <bullet_item>Esri GRID—Esri Grid.</bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE (*.img)—ERDAS IMAGINE.</bullet_item><para/>
        ///     <bullet_item>JPEG 2000 (*.jp2)—JPEG 2000.</bullet_item><para/>
        ///     <bullet_item>JPEG (*.jpeg)—Joint Photographic Experts Group.</bullet_item><para/>
        ///     <bullet_item>PNG (*.png)—Portable Network Graphics.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格数据集的格式。</para>
        ///   <bulletList>
        ///     <bullet_item>Geotiff （*.tif） - 标记图像文件格式。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>位图 （*.bmp） - Microsoft位图。</bullet_item><para/>
        ///     <bullet_item>ENVI （*.dat） - ENVI DAT.</bullet_item><para/>
        ///     <bullet_item>Esri BIL （*.bil） - 按线交错的 Esri 波段。</bullet_item><para/>
        ///     <bullet_item>Esri BIP （*.bip） - 按像素交错的 Esri 波段。</bullet_item><para/>
        ///     <bullet_item>Esri BSQ （*.bsq） - Esri 波段顺序。</bullet_item><para/>
        ///     <bullet_item>GIF （*.gif） - 图形交换格式。</bullet_item><para/>
        ///     <bullet_item>Esri GRID - Esri Grid。</bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE （*.img） - ERDAS IMAGINE。</bullet_item><para/>
        ///     <bullet_item>JPEG 2000 （*.jp2） - JPEG 2000。</bullet_item><para/>
        ///     <bullet_item>JPEG （*.jpeg） - 联合图像专家组。</bullet_item><para/>
        ///     <bullet_item>PNG （*.png） - 可移植网络图形。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public SplitRaster(object _in_raster, object _out_folder, object _out_base_name, _split_method_value _split_method, _format_value _format)
        {
            this._in_raster = _in_raster;
            this._out_folder = _out_folder;
            this._out_base_name = _out_base_name;
            this._split_method = _split_method;
            this._format = _format;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Split Raster";

        public override string CallName => "management.SplitRaster";

        public override List<string> AcceptEnvironments => ["compression", "configKeyword", "extent", "geographicTransformations", "outputCoordinateSystem", "parallelProcessingFactor", "pyramid", "rasterStatistics", "resamplingMethod", "snapRaster", "tileSize"];

        public override object[] ParameterInfo => [_in_raster, _out_folder, _out_base_name, _split_method.GetGPValue(), _format.GetGPValue(), _resampling_type.GetGPValue(), _num_rasters, _tile_size, _overlap, _units.GetGPValue(), _cell_size, _origin, _split_polygon_feature_class, _clip_type.GetGPValue(), _template_extent, _nodata_value, _derived_out_folder];

        /// <summary>
        /// <para>Input Raster</para>
        /// <para>The raster to split.</para>
        /// <para>要分割的栅格。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_raster { get; set; }


        /// <summary>
        /// <para>Output Folder</para>
        /// <para>The destination for the new raster datasets.</para>
        /// <para>新栅格数据集的目标。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Folder")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_folder { get; set; }


        /// <summary>
        /// <para>Output Base Name</para>
        /// <para>The prefix for each of the raster datasets you will create. A number will be appended to each prefix, starting with 0.</para>
        /// <para>将创建的每个栅格数据集的前缀。每个前缀将附加一个数字，从 0 开始。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Base Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_base_name { get; set; }


        /// <summary>
        /// <para>Split Method</para>
        /// <para><xdoc>
        ///   <para>Determines how to split the raster dataset.</para>
        ///   <bulletList>
        ///     <bullet_item>Size of tile—Specify the width and height of the tile.</bullet_item><para/>
        ///     <bullet_item>Number of tiles— Specify the number of raster tiles to create by breaking the dataset into a number of columns and rows.</bullet_item><para/>
        ///     <bullet_item>Polygon features— Use the individual polygon geometries in a feature class to split the raster.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定如何分割栅格数据集。</para>
        ///   <bulletList>
        ///     <bullet_item>图块大小 - 指定图块的宽度和高度。</bullet_item><para/>
        ///     <bullet_item>切片数 - 通过将数据集分解为多个列和行来指定要创建的栅格切片数。</bullet_item><para/>
        ///     <bullet_item>面要素 - 使用要素类中的各个面几何来分割栅格。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Split Method")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _split_method_value _split_method { get; set; }

        public enum _split_method_value
        {
            /// <summary>
            /// <para>Size of tile</para>
            /// <para>Size of tile—Specify the width and height of the tile.</para>
            /// <para>图块大小 - 指定图块的宽度和高度。</para>
            /// </summary>
            [Description("Size of tile")]
            [GPEnumValue("SIZE_OF_TILE")]
            _SIZE_OF_TILE,

            /// <summary>
            /// <para>Number of tiles</para>
            /// <para>Number of tiles— Specify the number of raster tiles to create by breaking the dataset into a number of columns and rows.</para>
            /// <para>切片数 - 通过将数据集分解为多个列和行来指定要创建的栅格切片数。</para>
            /// </summary>
            [Description("Number of tiles")]
            [GPEnumValue("NUMBER_OF_TILES")]
            _NUMBER_OF_TILES,

            /// <summary>
            /// <para>Polygon features</para>
            /// <para>Polygon features— Use the individual polygon geometries in a feature class to split the raster.</para>
            /// <para>面要素 - 使用要素类中的各个面几何来分割栅格。</para>
            /// </summary>
            [Description("Polygon features")]
            [GPEnumValue("POLYGON_FEATURES")]
            _POLYGON_FEATURES,

        }

        /// <summary>
        /// <para>Output Format</para>
        /// <para><xdoc>
        ///   <para>The format for the output raster datasets.</para>
        ///   <bulletList>
        ///     <bullet_item>Geotiff (*.tif)—Tagged Image File Format. This is the default.</bullet_item><para/>
        ///     <bullet_item>Bitmap (*.bmp)—Microsoft Bitmap.</bullet_item><para/>
        ///     <bullet_item>ENVI (*.dat)—ENVI DAT.</bullet_item><para/>
        ///     <bullet_item>Esri BIL (*.bil)—Esri Band Interleaved by Line.</bullet_item><para/>
        ///     <bullet_item>Esri BIP (*.bip)—Esri Band Interleaved by Pixel.</bullet_item><para/>
        ///     <bullet_item>Esri BSQ (*.bsq)—Esri Band Sequential.</bullet_item><para/>
        ///     <bullet_item>GIF (*.gif)—Graphic Interchange Format.</bullet_item><para/>
        ///     <bullet_item>Esri GRID—Esri Grid.</bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE (*.img)—ERDAS IMAGINE.</bullet_item><para/>
        ///     <bullet_item>JPEG 2000 (*.jp2)—JPEG 2000.</bullet_item><para/>
        ///     <bullet_item>JPEG (*.jpeg)—Joint Photographic Experts Group.</bullet_item><para/>
        ///     <bullet_item>PNG (*.png)—Portable Network Graphics.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出栅格数据集的格式。</para>
        ///   <bulletList>
        ///     <bullet_item>Geotiff （*.tif） - 标记图像文件格式。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>位图 （*.bmp） - Microsoft位图。</bullet_item><para/>
        ///     <bullet_item>ENVI （*.dat） - ENVI DAT.</bullet_item><para/>
        ///     <bullet_item>Esri BIL （*.bil） - 按线交错的 Esri 波段。</bullet_item><para/>
        ///     <bullet_item>Esri BIP （*.bip） - 按像素交错的 Esri 波段。</bullet_item><para/>
        ///     <bullet_item>Esri BSQ （*.bsq） - Esri 波段顺序。</bullet_item><para/>
        ///     <bullet_item>GIF （*.gif） - 图形交换格式。</bullet_item><para/>
        ///     <bullet_item>Esri GRID - Esri Grid。</bullet_item><para/>
        ///     <bullet_item>ERDAS IMAGINE （*.img） - ERDAS IMAGINE。</bullet_item><para/>
        ///     <bullet_item>JPEG 2000 （*.jp2） - JPEG 2000。</bullet_item><para/>
        ///     <bullet_item>JPEG （*.jpeg） - 联合图像专家组。</bullet_item><para/>
        ///     <bullet_item>PNG （*.png） - 可移植网络图形。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Format")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _format_value _format { get; set; }

        public enum _format_value
        {
            /// <summary>
            /// <para>Geotiff (*.tif)</para>
            /// <para>Geotiff (*.tif)—Tagged Image File Format. This is the default.</para>
            /// <para>Geotiff （*.tif） - 标记图像文件格式。这是默认设置。</para>
            /// </summary>
            [Description("Geotiff (*.tif)")]
            [GPEnumValue("TIFF")]
            _TIFF,

            /// <summary>
            /// <para>Bitmap (*.bmp)</para>
            /// <para>Bitmap (*.bmp)—Microsoft Bitmap.</para>
            /// <para>位图 （*.bmp） - Microsoft位图。</para>
            /// </summary>
            [Description("Bitmap (*.bmp)")]
            [GPEnumValue("BMP")]
            _BMP,

            /// <summary>
            /// <para>ENVI (*.dat)</para>
            /// <para>ENVI (*.dat)—ENVI DAT.</para>
            /// <para>ENVI （*.dat） - ENVI DAT.</para>
            /// </summary>
            [Description("ENVI (*.dat)")]
            [GPEnumValue("ENVI")]
            _ENVI,

            /// <summary>
            /// <para>Esri BIL (*.bil)</para>
            /// <para>Esri BIL (*.bil)—Esri Band Interleaved by Line.</para>
            /// <para>Esri BIL （*.bil） - 按线交错的 Esri 波段。</para>
            /// </summary>
            [Description("Esri BIL (*.bil)")]
            [GPEnumValue("Esri BIL")]
            _Esri_BIL,

            /// <summary>
            /// <para>Esri BIP (*.bip)</para>
            /// <para>Esri BIP (*.bip)—Esri Band Interleaved by Pixel.</para>
            /// <para>Esri BIP （*.bip） - 按像素交错的 Esri 波段。</para>
            /// </summary>
            [Description("Esri BIP (*.bip)")]
            [GPEnumValue("Esri BIP")]
            _Esri_BIP,

            /// <summary>
            /// <para>Esri BSQ (*.bsq)</para>
            /// <para>Esri BSQ (*.bsq)—Esri Band Sequential.</para>
            /// <para>Esri BSQ （*.bsq） - Esri 波段顺序。</para>
            /// </summary>
            [Description("Esri BSQ (*.bsq)")]
            [GPEnumValue("Esri BSQ")]
            _Esri_BSQ,

            /// <summary>
            /// <para>GIF (*.gif)</para>
            /// <para>GIF (*.gif)—Graphic Interchange Format.</para>
            /// <para>GIF （*.gif） - 图形交换格式。</para>
            /// </summary>
            [Description("GIF (*.gif)")]
            [GPEnumValue("GIF")]
            _GIF,

            /// <summary>
            /// <para>Esri GRID</para>
            /// <para>Esri GRID—Esri Grid.</para>
            /// <para>Esri GRID - Esri Grid。</para>
            /// </summary>
            [Description("Esri GRID")]
            [GPEnumValue("GRID")]
            _GRID,

            /// <summary>
            /// <para>ERDAS IMAGINE (*.img)</para>
            /// <para>ERDAS IMAGINE (*.img)—ERDAS IMAGINE.</para>
            /// <para>ERDAS IMAGINE （*.img） - ERDAS IMAGINE。</para>
            /// </summary>
            [Description("ERDAS IMAGINE (*.img)")]
            [GPEnumValue("IMAGINE IMAGE")]
            _IMAGINE_IMAGE,

            /// <summary>
            /// <para>JPEG 2000 (*.jp2)</para>
            /// <para>JPEG 2000 (*.jp2)—JPEG 2000.</para>
            /// <para>JPEG 2000 （*.jp2） - JPEG 2000。</para>
            /// </summary>
            [Description("JPEG 2000 (*.jp2)")]
            [GPEnumValue("JP2")]
            _JP2,

            /// <summary>
            /// <para>JPEG (*.jpeg)</para>
            /// <para>JPEG (*.jpeg)—Joint Photographic Experts Group.</para>
            /// <para>JPEG （*.jpeg） - 联合图像专家组。</para>
            /// </summary>
            [Description("JPEG (*.jpeg)")]
            [GPEnumValue("JPEG")]
            _JPEG,

            /// <summary>
            /// <para>PNG (*.png)</para>
            /// <para>PNG (*.png)—Portable Network Graphics.</para>
            /// <para>PNG （*.png） - 可移植网络图形。</para>
            /// </summary>
            [Description("PNG (*.png)")]
            [GPEnumValue("PNG")]
            _PNG,

        }

        /// <summary>
        /// <para>Resampling Technique</para>
        /// <para><xdoc>
        ///   <para>Choose an appropriate technique based on the type of data you have.</para>
        ///   <bulletList>
        ///     <bullet_item>Nearest—The fastest resampling method, and it minimizes changes to pixel values. Suitable for discrete data, such as land cover.</bullet_item><para/>
        ///     <bullet_item>Bilinear—Calculates the value of each pixel by averaging (weighted for distance) the values of the surrounding 4 pixels. Suitable for continuous data.</bullet_item><para/>
        ///     <bullet_item>Cubic—Calculates the value of each pixel by fitting a smooth curve based on the surrounding 16 pixels. Produces the smoothest image, but can create values outside of the range found in the source data. Suitable for continuous data.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>根据您拥有的数据类型选择适当的技术。</para>
        ///   <bulletList>
        ///     <bullet_item>最近 - 最快的重采样方法，可最大程度地减少对像素值的更改。适用于离散数据，例如土地覆盖。</bullet_item><para/>
        ///     <bullet_item>双线性 - 通过对周围 4 个像素的值进行平均（按距离加权）来计算每个像素的值。适用于连续数据。</bullet_item><para/>
        ///     <bullet_item>立方体 （Cubic） - 通过基于周围的 16 个像素拟合平滑曲线来计算每个像素的值。生成最平滑的图像，但可能会创建源数据中查找的范围之外的值。适用于连续数据。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Resampling Technique")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _resampling_type_value _resampling_type { get; set; } = _resampling_type_value._NEAREST;

        public enum _resampling_type_value
        {
            /// <summary>
            /// <para>Nearest</para>
            /// <para>Nearest—The fastest resampling method, and it minimizes changes to pixel values. Suitable for discrete data, such as land cover.</para>
            /// <para>最近 - 最快的重采样方法，可最大程度地减少对像素值的更改。适用于离散数据，例如土地覆盖。</para>
            /// </summary>
            [Description("Nearest")]
            [GPEnumValue("NEAREST")]
            _NEAREST,

            /// <summary>
            /// <para>Bilinear</para>
            /// <para>Bilinear—Calculates the value of each pixel by averaging (weighted for distance) the values of the surrounding 4 pixels. Suitable for continuous data.</para>
            /// <para>双线性 - 通过对周围 4 个像素的值进行平均（按距离加权）来计算每个像素的值。适用于连续数据。</para>
            /// </summary>
            [Description("Bilinear")]
            [GPEnumValue("BILINEAR")]
            _BILINEAR,

            /// <summary>
            /// <para>Cubic</para>
            /// <para>Cubic—Calculates the value of each pixel by fitting a smooth curve based on the surrounding 16 pixels. Produces the smoothest image, but can create values outside of the range found in the source data. Suitable for continuous data.</para>
            /// <para>立方体 （Cubic） - 通过基于周围的 16 个像素拟合平滑曲线来计算每个像素的值。生成最平滑的图像，但可能会创建源数据中查找的范围之外的值。适用于连续数据。</para>
            /// </summary>
            [Description("Cubic")]
            [GPEnumValue("CUBIC")]
            _CUBIC,

        }

        /// <summary>
        /// <para>Number of Output Rasters</para>
        /// <para>The number of columns (x) and rows (y) to split the raster dataset into. The X coordinate is the number of columns and the Y coordinate is number of rows.</para>
        /// <para>要将栅格数据集拆分为的列数 （x） 和行数 （y）。X 坐标是列数，Y 坐标是行数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Output Rasters")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _num_rasters { get; set; } = null;


        /// <summary>
        /// <para>Size of Output Rasters</para>
        /// <para>The x and y dimensions of the output tiles. The default unit of measurement is in pixels. You can change this with the Units for Output Raster Size and Overlap parameter. The X coordinate is the X (horizontal) dimension the output tiles and the Y coordinate is the Y (vertical) dimension of output tiles.</para>
        /// <para>输出磁贴的 x 和 y 尺寸。默认的度量单位是像素。您可以使用输出栅格大小和重叠的单位参数进行更改。X 坐标是输出切片的 X（水平）维度，Y 坐标是输出切片的 Y（垂直）维度。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Size of Output Rasters")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _tile_size { get; set; } = null;


        /// <summary>
        /// <para>Overlap</para>
        /// <para>The tiles do not have to line up perfectly; set the amount of overlap between tiles with this parameter. The default unit of measurement is in pixels. You can change this with the Units for Output Raster Size and Overlap parameter.</para>
        /// <para>瓷砖不必完美排列;使用此参数设置切片之间的重叠量。默认的度量单位是像素。您可以使用输出栅格大小和重叠的单位参数进行更改。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Overlap")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _overlap { get; set; } = 0;


        /// <summary>
        /// <para>Units for Output Raster Size and Overlap</para>
        /// <para><xdoc>
        ///   <para>Set the units of measurement for the Size of Output Rasters parameter and the Overlap parameter.</para>
        ///   <bulletList>
        ///     <bullet_item>Pixels—The unit is in pixels. This is the default.</bullet_item><para/>
        ///     <bullet_item>Meters—The unit is in meters.</bullet_item><para/>
        ///     <bullet_item>Feet—The unit is in feet.</bullet_item><para/>
        ///     <bullet_item>Degrees—The unit is in decimal degrees.</bullet_item><para/>
        ///     <bullet_item>Miles—The unit is in miles.</bullet_item><para/>
        ///     <bullet_item>Kilometers—The unit is in kilometers.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>设置输出栅格大小参数和重叠参数的测量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>像素 - 单位以像素为单位。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>米 - 单位为米。</bullet_item><para/>
        ///     <bullet_item>英尺—单位单位为英尺。</bullet_item><para/>
        ///     <bullet_item>度数 - 单位以十进制度为单位。</bullet_item><para/>
        ///     <bullet_item>英里—单位为英里。</bullet_item><para/>
        ///     <bullet_item>千米 - 单位为千米。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Units for Output Raster Size and Overlap")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _units_value _units { get; set; } = _units_value._PIXELS;

        public enum _units_value
        {
            /// <summary>
            /// <para>Pixels</para>
            /// <para>Pixels—The unit is in pixels. This is the default.</para>
            /// <para>像素 - 单位以像素为单位。这是默认设置。</para>
            /// </summary>
            [Description("Pixels")]
            [GPEnumValue("PIXELS")]
            _PIXELS,

            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The unit is in meters.</para>
            /// <para>米 - 单位为米。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The unit is in feet.</para>
            /// <para>英尺—单位单位为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Degrees</para>
            /// <para>Degrees—The unit is in decimal degrees.</para>
            /// <para>度数 - 单位以十进制度为单位。</para>
            /// </summary>
            [Description("Degrees")]
            [GPEnumValue("DEGREES")]
            _DEGREES,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The unit is in kilometers.</para>
            /// <para>千米 - 单位为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The unit is in miles.</para>
            /// <para>英里—单位为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

        }

        /// <summary>
        /// <para>Cell Size</para>
        /// <para>The spatial resolution of the output raster. If left blank, the output cell size will match the input raster. When you change the cell size values, the tile size is reset to the image size and the tile count is reset to 1.</para>
        /// <para>输出栅格的空间分辨率。如果留空，则输出像元大小将与输入栅格匹配。更改像元大小值时，切片大小将重置为图像大小，切片计数将重置为 1。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cell Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _cell_size { get; set; } = null;


        /// <summary>
        /// <para>Lower left origin</para>
        /// <para>Change the coordinates for the lower left origin point, where the tiling scheme will begin. If left blank, the lower left origin would be the same as the input raster.</para>
        /// <para>更改左下角原点的坐标，切片方案将从此开始。如果留空，则左下角的原点将与输入栅格相同。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Lower left origin")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _origin { get; set; } = null;


        /// <summary>
        /// <para>Split Polygon Feature Class</para>
        /// <para>A feature class that will be used to split the raster dataset.</para>
        /// <para>将用于分割栅格数据集的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Split Polygon Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _split_polygon_feature_class { get; set; } = null;


        /// <summary>
        /// <para>Clip Type</para>
        /// <para><xdoc>
        ///   <para>Limits the extent of your raster dataset before you split it.</para>
        ///   <bulletList>
        ///     <bullet_item>None— Use the full extent of the input raster dataset.</bullet_item><para/>
        ///     <bullet_item>Extent—Specify bounding box as your clipping boundary.</bullet_item><para/>
        ///     <bullet_item>Feature class—Specify a feature class to clip the extent.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在分割栅格数据集之前限制栅格数据集的范围。</para>
        ///   <bulletList>
        ///     <bullet_item>无 - 使用输入栅格数据集的全图范围。</bullet_item><para/>
        ///     <bullet_item>范围 （Extent） - 将边界框指定为剪裁边界。</bullet_item><para/>
        ///     <bullet_item>要素类 - 指定用于裁剪范围的要素类。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Clip Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _clip_type_value _clip_type { get; set; } = _clip_type_value._NONE;

        public enum _clip_type_value
        {
            /// <summary>
            /// <para>None</para>
            /// <para>None— Use the full extent of the input raster dataset.</para>
            /// <para>无 - 使用输入栅格数据集的全图范围。</para>
            /// </summary>
            [Description("None")]
            [GPEnumValue("NONE")]
            _NONE,

            /// <summary>
            /// <para>Extent</para>
            /// <para>Extent—Specify bounding box as your clipping boundary.</para>
            /// <para>范围 （Extent） - 将边界框指定为剪裁边界。</para>
            /// </summary>
            [Description("Extent")]
            [GPEnumValue("EXTENT")]
            _EXTENT,

            /// <summary>
            /// <para>Feature class</para>
            /// <para>Feature class—Specify a feature class to clip the extent.</para>
            /// <para>要素类 - 指定用于裁剪范围的要素类。</para>
            /// </summary>
            [Description("Feature class")]
            [GPEnumValue("FEATURE_CLASS")]
            _FEATURE_CLASS,

        }

        /// <summary>
        /// <para>Template Extent</para>
        /// <para><xdoc>
        ///   <para>An extent or a dataset used to define the clipping boundary. The dataset can be a raster or feature class.</para>
        ///   <bulletList>
        ///     <bullet_item>Default—The extent will be based on the maximum extent of all participating inputs. This is the default.</bullet_item><para/>
        ///     <bullet_item>Current Display Extent—The extent is equal to the data frame or visible display. The option is not available when there is no active map.</bullet_item><para/>
        ///     <bullet_item>As Specified Below—The extent will be based on the minimum and maximum extent values specified.</bullet_item><para/>
        ///     <bullet_item>Browse—The extent will be based on an existing dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于定义剪切边界的范围或数据集。数据集可以是栅格类，也可以是要素类。</para>
        ///   <bulletList>
        ///     <bullet_item>默认值 - 范围将基于所有参与输入的最大范围。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>当前显示范围 - 范围等于数据框或可见显示。当没有活动地图时，该选项不可用。</bullet_item><para/>
        ///     <bullet_item>如下所述 - 范围将基于指定的最小和最大范围值。</bullet_item><para/>
        ///     <bullet_item>浏览 - 范围将基于现有数据集。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Template Extent")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _template_extent { get; set; } = null;


        /// <summary>
        /// <para>NoData Value</para>
        /// <para>All the pixels with the specified value will be set to NoData in the output raster dataset.</para>
        /// <para>在输出栅格数据集中，所有具有指定值的像素都将设置为 NoData。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("NoData Value")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _nodata_value { get; set; } = null;


        /// <summary>
        /// <para>Updated Folder</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Folder")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _derived_out_folder { get; set; }


        public SplitRaster SetEnv(object compression = null, object configKeyword = null, object extent = null, object geographicTransformations = null, object outputCoordinateSystem = null, object parallelProcessingFactor = null, object pyramid = null, object rasterStatistics = null, object resamplingMethod = null, object snapRaster = null, double[] tileSize = null)
        {
            base.SetEnv(compression: compression, configKeyword: configKeyword, extent: extent, geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, parallelProcessingFactor: parallelProcessingFactor, pyramid: pyramid, rasterStatistics: rasterStatistics, resamplingMethod: resamplingMethod, snapRaster: snapRaster, tileSize: tileSize);
            return this;
        }

    }

}